A linear grouping code is a group of code blocks with fixed length, which can be presented as (n,k), and usually used for forward error correction. During coding, k information bits are grouped into length of n-bit code block. As 2k code words in [n,k,d] grouping code make up a k-dimension sub-space, the 2k code words can consist of k linearly independent bases, and if the k bases are written into form of matrix, then:
  G  =            [                                                  g                              1                ,                                  n                  -                  1                                                                                        g                              1                ,                                  n                  -                  2                                                                          …                                              g                              1                ,                0                                                                                        g                              2                ,                                  n                  -                  1                                                                                        g                              2                ,                                  n                  -                  2                                                                          …                                              g                              2                ,                0                                                                          ⋮                                ⋮                                                                                          ⋮                                                              g                              k                ,                                  n                  -                  1                                                                                        g                              k                ,                                  n                  -                  2                                                                          …                                              g                              k                ,                0                                                        ]        .  
Any code word in [n,k,d] code can be generated from linear combination of this group of bases, i.e.:
  C  =            m      ·      G        =          [                                                                                    m                  1                                                                              m                  2                                                            …                                                                                                        m                                              n                        -                        k                                                              ]                                    ·                                                              ⁡                      [                                                                                g                                          1                      ,                                              n                        -                        1                                                                                                                                  g                                          1                      ,                                              n                        -                        2                                                                                                              …                                                                      g                                          1                      ,                      0                                                                                                                                        g                                          2                      ,                                              n                        -                        1                                                                                                                                  g                                          2                      ,                                              n                        -                        2                                                                                                              …                                                                      g                                          2                      ,                      0                                                                                                                    ⋮                                                  ⋮                                                                                                                                          ⋮                                                                                                  g                                          k                      ,                                              n                        -                        1                                                                                                                                  g                                          k                      ,                                              n                        -                        2                                                                                                              …                                                                      g                                          k                      ,                      0                                                                                            ]                          .            
G is a code generation matrix. Obviously, for each row in the generation matrix, it is enough as long as linear independence can be fulfilled (without consideration of minimum distance), while the base of a k-dimension space can select k linearly independent vectors at random, so that the G as the code generation matrix is not unique. However whichever form is taken, they generate the same sub-space, namely the same [n,k,d] code.
An RS code is a linear grouping cyclic code, which is processed in unit (usually n=8 bytes, named as coding word) of a group of symbols of length n, and the n symbols in the group are generated from k information symbols to be transmitted based on certain association relationship. As the n symbols should also include error protection information, therefore the coding form is required to be expressed with (n,k), wherein k<n; so if n=8, then there are 28=256 kinds of symbols in total, and the symbols expressed in decimal system are in range of 0 to 255. The 256 kinds of symbols make up a finite field (named as Galois field) GF(28). Generally, if the finite field is extension field of binary field GF(2), it is expressed as GF(2m). In the field of GF(2m), t wrong (n, k) RS codes can be corrected, the number of check symbols is 2×t, and the minimum code distance dmin=2×t+1=n−k+1 (check matrix is a non-singular matrix). So-called 1 symbol error can be 1 bit wrong in the symbol, or several bits and even all m bits in the symbol can be wrong. It can be seen that, the RS code has extremely powerful random error and burst error correction ability, so it is very widely used in the field of digit error control.
A link layer provides data transmission service for a network layer, and this service is realized based on functions of this layer. The link layer has the following functions: establishment and removal of data link, frame transmission and frame synchronization, error and flow control, and data link management. As supplementation to forward error correction technique in physical link layer, the forward error correction (FEC) in link layer is used for realizing functions of error control in link layer, so that the preceding layer of protocol can receive data packet without error. The RS code is very suitable as a link layer forward error correction code due to its excellent performances.
Common interleavers in digital communications can be classified into byte interleaver and bit interleaver based on interleaving objects. The main function of byte interleaver is to disorganize the sequence of original bytes, so that the locations of error seem to be random, and the dependence between byte sequences before and after interleaving is weakened, and distributed among many code words instead of a few code words. An outstanding advantage of such practice is that the influence of data burst error is significantly lowered.
To further improve the performances of link layer FEC, the RS coder and decoder may be usually used together with the byte interleaver. Normally, the byte interleaver can use row-and-column interleaver, of which column number is equal to RS code length, and row number changes with code block number. For example, the byte interleaver in RS(255,207) code is fixed as 255 columns, wherein the 207 columns on the left side are information region, and the 48 columns on the right side are check region. The row number and column number in the interleaver can be started, but not limited to, numbering from 0. The consistency for description in the present invention starts numbering from 0 without exception.
Among the RS code interleaving coding methods in existing technologies, when a business data packet is input into the byte interleaver, firstly fill the 0th column from top to bottom, and after completion of filling the 0th column, fill the 1st column from top to bottom, and so on, until all the data in the business data packet are filled into the interleaver, the unfilled portion in the previous 207 columns is filled in with 0. The check values in each row are formed according to data information in the previous 207 bits. The form after interleaving coding is as shown in FIG. 1, wherein K=207, S=48. When outputting the data in the interleaver, the output starts from the 0th column from top to bottom in turn, and after completion of output the 0th column, output data from the 1st column by sequence from top to bottom, until all the data of the 255 columns output completely.
The RS code interleaving coding and the corresponding decoding method in the existing technologies have the following drawbacks: the portions with filling value of 0 in the information region are pooled together; as the data are transmitted by column, this will result in relatively overmuch protection in continuous time region corresponding to the row with more filling value in the column, while the continuous time region with fewer filling values in the column has relatively less protection; in addition, though the data in the check region are generated by row and read out by column, the data interleaving during output is over-regular, and fails to reach the optimum interleaving effect, so that the performances of the whole output data packet fails to be optimum.